package com.easyidea.its.facade.role;

import java.util.Collection;
import java.util.List;

import com.easyidea.its.domain.model.system.Permission;
import com.easyidea.its.domain.model.system.Role;

public interface RoleMgr {
	  /**
	   * 根据状态分页查询角色列表
	 * @param roleName TODO
	 * @param status
	 * @param start
	 * @param pageSize
	   * @return
	   */
	  Collection<Role> getPlatformRolesByStatus(String roleName, Integer status, int start, int pageSize);
	  /**
	   * 根据状态查询角色总数
	 * @param roleName TODO
	 * @param status
	   * @return
	   */
	  int getPlatformRoleCountByStatus(String roleName, Integer status);
	  /**
	   * 获取当前层根节点外的所有权限节点
	 * @param level TODO
	   * @return
	   */
	  List<Permission> getAllPerssionsByParentId(Integer parentId);
	  /**
	   * 保存角色以及该角色的权限
	   * @param platformRole
	   * @param permissionIds
	   */
	  Role savePlatformRole(Role platformRole, Integer[] permissionIds);

	  /**
	   * 根据id取单个角色
	   * @param id
	   * @return
	   */
	  Role getPlatformRoleById(Integer id);
	  /**
	   * 更新角色信息和角色相关权限
	   * @param platformRole
	   * @param permissionIds
	   */
	  Role updatePlatformRole(Role platformRole, Integer[] permissionIds);
	  
	  /**
	   * 删除角色及其关联
	   * @param id
	   */
	  void deletePlatformRoleById(Integer id);
	  /**
	   * 判断是否有同名存在
	   * @param name
	   * @param id
	   * @return
	   */
	  boolean isExistSameName(String name, Integer id);
}
